package cn.lili.modules.promotion.service;

import cn.lili.common.security.AuthUser;
import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.order.order.entity.dos.OrderItem;
import cn.lili.modules.promotion.entity.dos.ReturnActivityUser;
import com.baomidou.mybatisplus.extension.service.IService;
import io.swagger.annotations.ApiModel;

import javax.validation.constraints.NotBlank;
import java.util.List;

@ApiModel(value = "用户全返卷")
public interface ReturnActivityUserService extends IService<ReturnActivityUser> {

    /**
     * 为用户生成用户全返卷
     *
     * @param orderItem 子订单
     * @param userId    用户ID
     */
    Boolean generate(String userId, OrderItem orderItem);


    /**
     * 更新用户全返卷 生效全返卷
     *
     * @param userId      用户ID
     * @param orderItemSn 子订单ID
     */
    Boolean updateStatus(@NotBlank String userId,String orderSn, String orderItemSn);

    /**
     * 更新用户全返卷 使用状态
     *
     * @param useStatus 使用状态
     * @param id        用户全返卷ID
     */
    Boolean updateUseStatus(@NotBlank String id, @NotBlank String useStatus);

    /**
     * 查询用户全返卷
     * @param userId 用户ID
     * @return 分组后的用户全返卷
     * */
    List<ReturnActivityUser> getList(String userId, String useStatus);

    /**
     * 更新到期状态
     * @return 是否更新成功
     * */
    Boolean updateBecomeDue();

    /**
     * 获取用户全返券数量
     * @return
     */
    long getUserReturnActivityNum ();

    /**
     * 根据用户和订单号删除用户全返券
     * @param userId
     * @param orderItemSn
     * @return
     */
    boolean deleteUserReturnActivity (String userId, String orderItemSn);

    boolean deleteUserReturnActivityByOrderSn (String userId, String orderSn);

    /**
     * 全返券生成
     * @param openId
     * @param orderSn
     * @param price
     * @return
     */
    ResultMessage<Object> generate(String openId, String orderSn, Double price);
}
